package runthrad;

import javax.xml.bind.DatatypeConverter;
import java.util.ArrayList;

/**
 * 竞态条件
 * 测试多线程返回值
 * @author DELL
 * @create 2017-09-19 14:14
 *
 * 如果第一个for循环太快，在第一个for循环生成的线程结束之前就进入了第二个for循环，程序将没有任何输出
 */
public class TestReturnValue2 {
    public static void main(String[] args) {
        ArrayList<String> files = new ArrayList<>();
        files.add("src/file/file.txt");
        files.add("src/file/file2.txt");
        files.add("src/file/file3.txt");
        DigestThread[] digests = new DigestThread[files.size()];
        for(int i = 0; i < files.size(); i++) {
            digests[i] = new DigestThread(files.get(i));
            digests[i].start();
        }
        for (int i = 0; i < files.size(); i++) {
            StringBuilder result = new StringBuilder(files.get(i));
            result.append(": ");
            byte[] digest = digests[i].getDigest();
            result.append(DatatypeConverter.printHexBinary(digest));

            System.out.println(result);
        }
    }
}
